﻿var regexEnum =
{
    intege: "^-?[1-9]\\d*$",					//整数
    intege1: "^[1-9]\\d*$",					//正整数
    intege2: "^-[1-9]\\d*$",					//负整数
    num: "^([+-]?)\\d*\\.?\\d+$",			//数字
    //num1: "^[1-9]\\d*|0$", 				//正数（正整数 + 0）
    num1: "^(0)|(^[1-9]*[1-9][0-9]*$)$",    //正数（正整数 + 0）
    num2: "^-[1-9]\\d*|0$",					//负数（负整数 + 0）
    num3: "^[1-9]+\\d*\\.*\\d*$",//正实数
    decmal: "^([+-]?)\\d*\\.\\d+$",			//浮点数
    decmal1: "^[1-9]\\d*.\\d*|0.\\d*|[1-9]\\d*$", //正浮点数
    decmal2: "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",　 //负浮点数
    decmal3: "^-?([1-9]\\d*|[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$", //浮点数
    decmal4: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",　　 //非负浮点数（正浮点数 + 0）
    decmal5: "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",　　//非正浮点数（负浮点数 + 0）
    decmal6: "^[0-9]+([.]{1}[0-9]+){0,1}$", //正浮点数
    jiage: "^(d*.d{0,2}|d+).*$",//两位小数价格
    jiage0: "^([1-9]\d|[1-9]\d+(\.[0-9]{2})?|0\.[1-9][0-9]|0\.0[1-9])$",//两位小数价格不能为0
    email: "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件
    fixedphone: "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?$", //固定电话 包含区号如：0531-88873003 或者053188873003-001
    color: "^[a-fA-F0-9]{6}$",				//颜色
    //url: "^((https|http|ftp|rtsp|mms)?://)"
    //                + "?(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?" //ftp的user@      
    //                + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184      
    //                + "|" // 允许IP和DOMAIN（域名）      
    //                + "([0-9a-zA-Z_!~*'()-]+\.)*" // 域名- www.      
    //                + "([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\." // 二级域名      
    //                + "[a-zA-Z]{2,6})" // first level domain- .com or .museum      
    //                + "(:[0-9]{1,4})?" // 端口- :80      
    //                + "((/?)|"
    //                + "(/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+/?)$", //url
    url: "^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*$",
    pics: "^(.*)\\.(jpg|gif|jpeg|png|JPG|GIF|JPEG|PNG)$", //图片2
    zhichengzhengshu: "^(.*)\\.(jpg|gif|jpeg|png|rar|zip|7z|JPG|GIF|JPEG|PNG|RAR|ZIP|7Z)$",
    chinese: "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$",					//仅中文
    chineseLetter: "^[\\w\\u4e00-\\u9fa5]+$",					//仅中文字母数字下划线
    chineseLetter1: "^[\u4e00-\u9fa5|a-zA-Z]+$",					//仅中文字母
    specialLetter: "[`~!@#$^&*()=|{}':;',\\[\\].<>/?~！@#￥……&*（）&mdash;—|{}【】‘；：”“'。，、？]",	//特殊字符
    ascii: "^[\\x00-\\xFF]+$",				//仅ACSII字符
    zipcode: "^\\d{6}$",						//邮编
    phone: "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$", //固定电话
    mobile: "^(0|86|17951)?(13[0-9]|15[012356789]|17[01678]|18[0-9]|14[57])[0-9]{8}$", //"^(1)[0-9]{10}$", 	//手机
    //mobileorphone: "^((0\d{2,3}-\d{7,8})|(1[35784]\d{9}))$",
    mobileorphone: "(^(0|86|17951)?(13[0-9]|15[012356789]|17[01678]|18[0-9]|14[57])[0-9]{8}$)|(^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$)",
    ip4: "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",	//ip地址
    notempty: "^\\S+$",						//非空
    picture: "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",	//图片
    video: "(.*)\\.(wmv|avi|dat|asf)$", //视频
    mp4: "^(.*)\\.(mp4||MP4)$", //mp4验证
    ppt: "^(.*)\\.(ppt||pptx||PPT||PPTX)$",
    pdf: "^(.*)\\.(pdf||PDF)$",
    word: "^(.*)\\.(docx||doc||DOC||DOCX)$",
    rar: "(.*)\\.(rar|zip|7zip|tgz)$",								//压缩文件
    date: "^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",					//日期
    qq: "^[1-9]*[1-9][0-9]*$",				//QQ号码
    username: "^[\@A-Za-z0-9\\.\\@\\_\\-]+$", 				//用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
    nickname: "^[\u4e00-\u9fa5a-zA-Z0-9\\.\\@\\_]+$", //昵称
    password: "^[\@A-Za-z0-9\\!\\#\\$\\%\\^\\&\\*\\.\\~\\_]{6,16}$",//密码的
    letter: "^[A-Za-z]+$",					//字母
    letter_u: "^[A-Z]+$",					//大写字母
    letter_l: "^[a-z]+$",					//小写字母
    idcard: "^[1-9]([0-9]{14}|[0-9]{17})$", //身份证
    ps_username: "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D_\\w]+$", //中文、字母、数字 _
    //start 政和通业务扩展 -----------------------------------------
    rate: "^(0)|(^[1-9][0-9]*%?$)|(^[1-9][0-9]*\\.[0-9]{1,2}%?$)|(^0\\.[0-9]{1,2}%?$)$", // //税率检测  整数|两位小数  %  如：49 或 49%
    money: "^(^[1-9]*[0-9]\\.[0-9]{1,2}$)|(^[1-9][0-9]*$)$", //金额
    farencode: "^(^[0-9]{9}$)|(^[0-9A-Z]{9}$)|(^[0-9A-Z]{8}-[0-9A-Z]$)|(^[0-9]{8}-[0-9]$|(^[0-9]{8}-[A-Za-z]$)|(^[0-9]{8}[A-Za-z]$))|(^[0-9A-Z]{15}$)|(^[0-9]{18}$)|(^[0-9A-Z]{18}$)|(^[0-9A-Z]{18}-[0-9A-Z]$)|(^[0-9]{18}-[0-9]$|(^[0-9]{18}-[A-Za-z]$)|(^[0-9]{18}[A-Za-z]$))|(0)$", //法人代码的规则
    zlcode: "^(ZL|CN)\\s?[0-9]{2,4}\\s?[0-9]\\s?[0-9]{5,7}\\.[0-9]$" //专利号
    //end  政和通业务扩展-----------------------------------------
}

var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" }

function isCardID(sId) {
    var iSum = 0;
    var info = "";
    // if ( !new RegExp(regexEnum.idcard).test(sId)) return "你输入的身份证长度或格式错误";

    var reg = /(^\d{17}(\d|X)$)/;
    if (reg.test(sId) === false)
        return "你输入的身份证长度或格式错误,若最后一位为X请输入大写";
    sId = sId.replace(/x$/i, "a");

    if (aCity[parseInt(sId.substr(0, 2))] == null) return "你的身份证地区非法";
    sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
    var d = new Date(sBirthday.replace(/-/g, "/"));
    if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return "身份证上的出生日期非法";
    for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
    if (iSum % 11 != 1) return "你输入的身份证号非法";
    return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") 
}




//短时间，形如 (13:04:06)
function isTime(str) {
    var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) { return false }
    if (a[1] > 24 || a[3] > 60 || a[4] > 60) {
        return false;
    }
    return true;
}

//短日期，形如 (2003-12-05)
function isDate(str) {
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if (r == null) return false;
    var d = new Date(r[1], r[3] - 1, r[4]);
    return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
}

//长时间，形如 (2003-12-05 13:04:06)
function isDateTime(str) {
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if (r == null) return false;
    var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
    return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}